import apiClient from './config'

/**
 * 回收物品相关 API
 */
export const itemsAPI = {
  /**
   * 获取物品列表（分页）
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页大小
   * @param {string} params.category - 物品分类过滤
   * @param {string} params.status - 物品状态过滤
   * @param {string} params.keyword - 搜索关键词
   * @returns {Promise} 物品列表
   */
  getItems(params = {}) {
    return apiClient.get('/items', { params })
  },

  /**
   * 根据ID获取物品详情
   * @param {number} itemId - 物品ID
   * @returns {Promise} 物品详情
   */
  getItemById(itemId) {
    return apiClient.get(`/items/${itemId}`)
  },

  /**
   * 创建物品
   * @param {Object} itemData - 物品数据
   * @param {string} itemData.name - 物品名称
   * @param {string} itemData.category - 物品分类
   * @param {string} itemData.unit - 计量单位
   * @param {number} itemData.pricePerUnit - 单价
   * @param {string} itemData.description - 物品描述
   * @returns {Promise} 创建结果
   */
  createItem(itemData) {
    return apiClient.post('/items', itemData)
  },

  /**
   * 更新物品信息
   * @param {number} itemId - 物品ID
   * @param {Object} itemData - 更新的物品数据
   * @returns {Promise} 更新结果
   */
  updateItem(itemId, itemData) {
    return apiClient.put(`/items/${itemId}`, itemData)
  },

  /**
   * 删除物品
   * @param {number} itemId - 物品ID
   * @returns {Promise} 删除结果
   */
  deleteItem(itemId) {
    return apiClient.delete(`/items/${itemId}`)
  },

  /**
   * 批量删除物品
   * @param {number[]} itemIds - 物品ID列表
   * @returns {Promise} 删除结果
   */
  batchDeleteItems(itemIds) {
    return apiClient.delete('/items/batch', { data: { itemIds } })
  },

  /**
   * 启用/禁用物品
   * @param {number} itemId - 物品ID
   * @param {string} status - 状态（active/inactive）
   * @returns {Promise} 操作结果
   */
  updateItemStatus(itemId, status) {
    return apiClient.patch(`/items/${itemId}/status`, { status })
  },

  /**
   * 批量更新物品价格
   * @param {Array} priceUpdates - 价格更新列表
   * @param {number} priceUpdates[].itemId - 物品ID
   * @param {number} priceUpdates[].pricePerUnit - 新单价
   * @returns {Promise} 更新结果
   */
  batchUpdatePrices(priceUpdates) {
    return apiClient.patch('/items/prices', { priceUpdates })
  },

  /**
   * 获取物品分类列表
   * @returns {Promise} 分类列表
   */
  getCategories() {
    return apiClient.get('/items/categories')
  },

  /**
   * 创建物品分类
   * @param {Object} categoryData - 分类数据
   * @param {string} categoryData.name - 分类名称
   * @param {string} categoryData.description - 分类描述
   * @returns {Promise} 创建结果
   */
  createCategory(categoryData) {
    return apiClient.post('/items/categories', categoryData)
  },

  /**
   * 更新物品分类
   * @param {number} categoryId - 分类ID
   * @param {Object} categoryData - 更新的分类数据
   * @returns {Promise} 更新结果
   */
  updateCategory(categoryId, categoryData) {
    return apiClient.put(`/items/categories/${categoryId}`, categoryData)
  },

  /**
   * 删除物品分类
   * @param {number} categoryId - 分类ID
   * @returns {Promise} 删除结果
   */
  deleteCategory(categoryId) {
    return apiClient.delete(`/items/categories/${categoryId}`)
  },

  /**
   * 获取物品统计信息
   * @returns {Promise} 统计信息
   */
  getItemsStats() {
    return apiClient.get('/items/stats')
  },

  /**
   * 获取价格历史记录
   * @param {number} itemId - 物品ID
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @returns {Promise} 价格历史
   */
  getPriceHistory(itemId, params = {}) {
    return apiClient.get(`/items/${itemId}/price-history`, { params })
  },

  /**
   * 导出物品数据
   * @param {Object} params - 导出参数
   * @returns {Promise} 导出文件
   */
  exportItems(params = {}) {
    return apiClient.get('/items/export', { 
      params,
      responseType: 'blob'
    })
  },

  /**
   * 导入物品数据
   * @param {File} file - 导入文件
   * @returns {Promise} 导入结果
   */
  importItems(file) {
    const formData = new FormData()
    formData.append('file', file)
    return apiClient.post('/items/import', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  }
}
